package org.example.pcbcircuitboard.dao;

import org.apache.ibatis.annotations.Mapper;
import org.example.pcbcircuitboard.entity.PCBEntity;
import org.example.pcbcircuitboard.pojo.CenterBottomPojo;
import org.example.pcbcircuitboard.pojo.DispositionPojo;
import org.example.pcbcircuitboard.pojo.LeftCenterPojo;
import org.example.pcbcircuitboard.pojo.NavigationPojo;

import java.util.List;

@Mapper
public interface PCBMapper {
    /**
     * 插入 监测数据
     * @param pcbEntity 监测数据实体
     */
    int insertPcbData(PCBEntity pcbEntity);
    /**
     * 获取 某产品的所有故障数据
     * @param productName 产品名称
     * @return 故障数据列表
     */
    List<LeftCenterPojo> getLeftCenterData(String productName);
    /**
     * 获取 所有产品的名称|完好率|故障率
     * @return 产品名称|完好率|故障率列表
     */
    List<CenterBottomPojo> getCenterBottomData();
    /**
     * 获取 产品对应所有PCB数据
     * @param productName 产品名称
     * @return PCB数据列表
     */
    List<DispositionPojo> getDispositionData(String productName);
    /**
     * 获取 按照批次 查询PCB数据
     * @param productName 产品名称
     * @param batch 批次
     * @return PCB数据列表
     */
    List<DispositionPojo> getBatchDispositionData(String productName,String batch);
    /**
     * 获取 按照日期 查询PCB数据
     * @param productName 产品名称
     * @param date 日期
     * @return PCB数据列表
     */
    List<DispositionPojo> getDateDispositionData(String productName,String date);
    /**
     * 获取 指定日期 指定批次 的PCB数据
     * @param productName 产品名称
     * @param batch 批次
     * @param date 日期
     * @return PCB数据列表
     */
    List<DispositionPojo> getBatchDateDispositionData(String productName,String batch,String date);
    /**
     * 获取 对应产品的所有批次名称
     * @param productName 产品名称
     * @return 批次名称列表
     */
    List<DispositionPojo> getBatchNames(String productName);
    /**
     * 获取 所有产品的名称
     * @return 产品名称列表
     */
    List<String> getAllProductNames();
    /**
     * 获取 判断是否重名
     * @param productName 产品名称
     * @return 1 重名 0 不重名
     */
    int isProductExist(String productName);
    /**
     * 插入 新产品
     * @param productName 产品名称
     */
    int insertNewProduct(String productName);
    /**
     * 获取 根据产品获取 产品总量 产品合格率 产品故障个数
     */
    NavigationPojo getNavigationData(String productName);
}
